package 基础技术.stream学习;

import java.util.Optional;
import java.util.stream.Stream;

public class 规约操作_折叠操作{
    public static void main(String[] args){
       function1();
    }
    static void function1(){
        Stream<String> stream  = Stream.of("1","2ac","3bc");
//        Optional<String> s = stream.reduce(((s1, s2) -> s1.length()>=s2.length()?s1:s2));
        //Optional<String> s1 = stream.max((o1, o2) -> o1.length()>o2.length()?o1.length():o2.length());
        /**
         * 规约操作(折叠操作) 是指从一组值中按照一定的自定义规则来查找一个值
         * 特性  1.stream只能使用一次
         *      2.stream是一个类似视图的东西 它不会影响原始的数据,只会生成一个新的视图
         *      3.stream不会立刻执行 而是等到需要数据的时候再去取
         */
//        System.out.println(s1);

        stream.filter(s -> s.length()==3).forEach(s -> System.out.println(s));
        /**
         * filter(过滤方式).迭代方式
         * filter只是过滤作用 不会执行返回值 只会返回一个过滤之后的容器
         */


        Stream<String> stream1  = Stream.of("1","2ac","3bc","1");
        stream1.distinct().forEach(s -> System.out.println(s));
        /**
         * distinct()
         * 筛选流之中重复的部分 进行剔除
         */
    }

}
